
package Control;

import Utilitaria.ConexaoBanco;
import Utilitaria.Util;
import View.limPrincipal;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class ctrPrincipal {

    private ConexaoBanco objConexao;
    private ctrCliente objCtrCliente;
    private ctrAnimal objCtrAnimal;
    private ctrFornecedor objCtrFornecedor;
    private ctrProduto objCtrProduto;
    private ctrEntrada objCtrAlerta;
    private ctrReserva objCtrReserva;
    private ctrFuncionario objCtrFuncionario;
    private ctrVenda objCtrVenda;

    public ctrPrincipal() {
        objConexao = new ConexaoBanco();
        objConexao.conecta();
        limPrincipal limPrincipal = new limPrincipal(this);
    }

    public void chamaCliente () throws Exception {
        try {
            objCtrAnimal = new ctrAnimal(objConexao);
            objCtrCliente = new ctrCliente(this, objConexao);
        } catch (SQLException erro) {
            System.out.println("Reporte de excessão no controle principal \n Erro: " + erro.getMessage());
        }
    }

    public JPanel chamaAnimal(){
        return objCtrAnimal.geraInterface();
    }

    public void chamaFornecedor() {
        try {
            objCtrFornecedor = new ctrFornecedor(this, objConexao);
        } catch (SQLException erro) {
            System.out.println("Reporte de excessão no controle principal \n Erro: " + erro.getMessage());
        }
    }

    public void chamaProduto() {
        objCtrProduto = new ctrProduto(this, objConexao);
    }

    public void chamaAlerta() {
        objCtrAlerta  = new ctrEntrada(this, objConexao);
    }
    
    public void chamaReserva() {
        objCtrReserva = new ctrReserva(this, objConexao);
    }

    public void chamaFuncionario() {
        try {
            objCtrFuncionario = new ctrFuncionario(this, objConexao);
        } catch (SQLException erro) {
            System.out.println("Reporte de excessão no controle principal \n Erro: " + erro.getMessage());
        }
    }

    public void chamaVenda() {
        objCtrVenda = new ctrVenda(this, objConexao);
    }

    public void fechar(int opcao_escolhida){

        if (opcao_escolhida == JOptionPane.YES_OPTION){
           objConexao.desconecta();
           System.exit(0);
        }
        else
            return;
    }

    public int operacaoAnimal(int codCliente, int operacao) throws SQLException, Exception {
        switch (operacao){
            case Util.CADASTRA:
                return objCtrAnimal.cadastraAnimal(codCliente);
            case Util.ALTERA:
                return objCtrAnimal.alteraAnimal(codCliente);
            case Util.PESQUISA:
                return objCtrAnimal.pesquisaAnimal(codCliente);
            case Util.LIMPA:
                return objCtrAnimal.limpaAtributos();
            default:
                return 1;
        }

    }
    
}
